package com.icebartech.base.modules.user.service;

import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.icebartech.base.modules.user.dto.AdminUserCoreDTO;
import com.icebartech.base.modules.user.model.AdminUserCore;
import com.icebartech.base.modules.user.model.AdminUserLoginInfo;
import com.icebartech.core.modules.BaseService;

/**
 * 后台用户service接口类
 * @author wenhsh
 *
 */
public interface AdminUserCoreService extends BaseService{
	
	/**
	 * 注册一个普通教师用户账号
	 * @param userCore 账号基本信息
	 * @param userLoginInfo 登录信息，包含账号和密码
	 * @return
	 */
	public AdminUserCore registerAdminUserCore(AdminUserCore userCore, AdminUserLoginInfo userLoginInfo);
		
	
	
	/**
	 * 检查用户名是否存在
	 * @param userName 用户名
	 * @return
	 */
	public boolean checkUserName(String userName);
	
	/**
	 * 根据用户名返回唯一的用户记录
	 * @param userName 用户名
	 * @return
	 */
	public AdminUserCore findAdminUserCoreByUserName(String userName);


	/**
	 * 分页查找管理账户用户信息
	 * @param pageIndex 当前页
	 * @param pageSize 分页大小
	 * @param paramMap 查询条件
	 * @return
	 */
	public PageInfo<Map<String, Object>> findUserCoreAndRoleByPage(int pageIndex, int pageSize,
			Map<String, Object> paramMap);
	
	/**
	 * 根据筛选条件分页查找用户
	 * @param paramMap
	 * @return
	 */
	public PageInfo<AdminUserCoreDTO> findAdminUserCoreByPage(Map<String, Object> paramMap, int pageIndex, int pageSize);
	
	/**
	 * 根据用户id获取用户基本信息
	 * @param userId 用户id
	 * @return
	 */
	public AdminUserCoreDTO findUserCoreExtByUserId(Long userId);

	/**
	 * 根据用户id获取对对应的用户头像url
	 * @param userId
	 * @return
	 */
	public String getUserAvatarUrl(Long userId);
	
	/**
	 * 删除后台用户 
	 * @param userId 用户id
	 * @return
	 */
	public boolean deleteAdminUser(Long userId);
	
	/**
	 * 转换基础对象为DTO对象
	 * @param userCore
	 * @return
	 */
	public AdminUserCoreDTO assembleUserCoreExt(AdminUserCore userCore);
	
}
